home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / net / RCS / swap.c,v < prev   
Text File  |  1989-12-11  |  5KB  |  288 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.2
  10. date     89.12.11.13.42.57;  author rab;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     89.08.29.14.25.12;  author rab;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @@
  22.  
  23.  
  24. 1.2
  25. log
  26. @Fixed byteorder problems for ds3100.
  27. @
  28. text
  29. @/* 
  30.  * swap.c --
  31.  *
  32.  *    Library routine for manipulating byte order.
  33.  *
  34.  *
  35.  * Copyright 1988 Regents of the University of California
  36.  * Permission to use, copy, modify, and distribute this
  37.  * software and its documentation for any purpose and without
  38.  * fee is hereby granted, provided that the above copyright
  39.  * notice appear in all copies.  The University of California
  40.  * makes no representations about the suitability of this
  41.  * software for any purpose.  It is provided "as is" without
  42.  * express or implied warranty.
  43.  *
  44.  *
  45.  */
  46.  
  47. #ifndef lint
  48. static char rcsid[] = "$Header: /sprite/src/lib/c/net/RCS/swap.c,v 1.1 89/08/29 14:25:12 rab Exp Locker: rab $ SPRITE (Berkeley)";
  49. #endif
  50.  
  51. #include "machparam.h"
  52.  
  53.  
  54. /* 
  55.  *----------------------------------------------------------------------
  56.  *
  57.  * ntohs --
  58.  *
  59.  *    Convert a short integer in network byte order to an short integer in 
  60.  *    host byte order.
  61.  *
  62.  * Results:
  63.  *    The short integer in host byte order.
  64.  *
  65.  * Side effects:
  66.  *    None.
  67.  *
  68.  *----------------------------------------------------------------------
  69.  */
  70.  
  71. unsigned short 
  72. ntohs(shortInt)
  73.     unsigned short shortInt;     /* A short int in network byte order. */
  74. {
  75.  
  76. #if BYTE_ORDER == LITTLE_ENDIAN
  77.     union swab {
  78.     unsigned short s;
  79.     unsigned char  c[2];
  80.     } in, out;
  81.  
  82.     in.s = shortInt;
  83.     out.c[0] = in.c[1];
  84.     out.c[1] = in.c[0];
  85.     return out.s;
  86. #else
  87.     return shortInt;
  88. #endif
  89.  
  90. }
  91.  
  92. /* 
  93.  *----------------------------------------------------------------------
  94.  *
  95.  * ntohl --
  96.  *
  97.  *    Convert an integer in network byte order to an integer in 
  98.  *    host byte order.
  99.  *
  100.  * Results:
  101.  *    The integer in host byte order.
  102.  *
  103.  * Side effects:
  104.  *    None.
  105.  *
  106.  *----------------------------------------------------------------------
  107.  */
  108.  
  109. unsigned long 
  110. ntohl(longInt)
  111.     unsigned long longInt;    /* 32bit integer in network byte order. */
  112. {
  113. #if BYTE_ORDER == LITTLE_ENDIAN
  114.     union {
  115.     unsigned long l;
  116.     unsigned char  c[4];
  117.     } in, out;
  118.  
  119.     in.l = longInt;
  120.     out.c[0] = in.c[3];
  121.     out.c[1] = in.c[2];
  122.     out.c[2] = in.c[1];
  123.     out.c[3] = in.c[0];
  124.     return out.l;
  125. #else
  126.     return longInt;
  127. #endif
  128. }
  129.  
  130. /* 
  131.  *----------------------------------------------------------------------
  132.  *
  133.  * htons --
  134.  *
  135.  *    Convert a short integer in host byte order to an short integer in 
  136.  *    network byte order.
  137.  *
  138.  * Results:
  139.  *    The short integer in network byte order.
  140.  *
  141.  * Side effects:
  142.  *    None.
  143.  *
  144.  *----------------------------------------------------------------------
  145.  */
  146.  
  147. unsigned short 
  148. htons(shortInt)
  149.     unsigned short shortInt;     /* A short int in Host byte order. */
  150. {
  151. #if BYTE_ORDER == LITTLE_ENDIAN
  152.     union swab {
  153.     unsigned short s;
  154.     unsigned char  c[2];
  155.     } in, out;
  156.  
  157.     in.s = shortInt;
  158.     out.c[0] = in.c[1];
  159.     out.c[1] = in.c[0];
  160.     return out.s;
  161. #else
  162.     return shortInt;
  163. #endif
  164. }
  165.  
  166. /* 
  167.  *----------------------------------------------------------------------
  168.  *
  169.  * htonl --
  170.  *
  171.  *    Convert an integer in host byte order to an integer in 
  172.  *    net byte order.
  173.  *
  174.  * Results:
  175.  *    The integer in net byte order.
  176.  *
  177.  * Side effects:
  178.  *    None.
  179.  *
  180.  *----------------------------------------------------------------------
  181.  */
  182.  
  183. unsigned long 
  184. htonl(longInt)
  185.     unsigned long longInt;    /* 32bit integer in host byte order. */
  186. {
  187. #if BYTE_ORDER == LITTLE_ENDIAN
  188.     union {
  189.     unsigned long l;
  190.     unsigned char  c[4];
  191.     } in, out;
  192.  
  193.     in.l = longInt;
  194.     out.c[0] = in.c[3];
  195.     out.c[1] = in.c[2];
  196.     out.c[2] = in.c[1];
  197.     out.c[3] = in.c[0];
  198.     return out.l;
  199. #else
  200.     return longInt;
  201. #endif
  202. }
  203.  
  204. @
  205.  
  206.  
  207. 1.1
  208. log
  209. @Initial revision
  210. @
  211. text
  212. @d20 2
  213. a21 3
  214. static char rcsid[] = "$Header: swp.c,v 2.0 87/08/11 09:34:20 brent Exp $ SPRITE (Berkeley)";
  215. #endif not lint
  216.  
  217. d45 1
  218. a45 1
  219.     unsigned short shortInt;     /* A short int in network byte order. */
  220. d48 5
  221. a52 4
  222.     union swab {
  223.         unsigned short s;
  224.         unsigned char  c[2];
  225.     } in, out;
  226. d54 6
  227. a59 4
  228.     in.s = shortInt;
  229. #if BYTE_ORDER == LITTLE_ENDIAN
  230.     out.c[0] = in.c[1];
  231.     out.c[1] = in.c[0];
  232. a61 1
  233.      return (out.s);
  234. d83 1
  235. a83 1
  236.     unsigned long longInt;    /* 32bit integer in network byte order. */
  237. d85 5
  238. a89 5
  239.  
  240.     union {
  241.         unsigned long l;
  242.         unsigned char  c[4];
  243.     } in, out;
  244. d91 8
  245. a98 6
  246.     in.l = longInt;
  247. #if BYTE_ORDER == LITTLE_ENDIAN
  248.     out.c[0] = in.c[3];
  249.     out.c[1] = in.c[2];
  250.     out.c[2] = in.c[1];
  251.     out.c[3] = in.c[0];
  252. a99 2
  253.  
  254.      return (out.l);
  255. d123 5
  256. a127 5
  257.  
  258.     union swab {
  259.         unsigned short s;
  260.         unsigned char  c[2];
  261.     } in, out;
  262. d129 6
  263. a134 4
  264.     in.s = shortInt;
  265. #if BYTE_ORDER == LITTLE_ENDIAN
  266.     out.c[0] = in.c[1];
  267.     out.c[1] = in.c[0];
  268. a135 1
  269.      return (out.s);
  270. d159 5
  271. d165 8
  272. a172 11
  273.     union {
  274.         unsigned long l;
  275.         unsigned char  c[4];
  276.     } in, out;
  277.  
  278.     in.l = longInt;
  279. #if BYTE_ORDER == LITTLE_ENDIAN
  280.     out.c[0] = in.c[3];
  281.     out.c[1] = in.c[2];
  282.     out.c[2] = in.c[1];
  283.     out.c[3] = in.c[0];
  284. a173 2
  285.  
  286.      return (out.l);
  287. @
  288.